{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from utils import rgb, get_dataset, get_performance\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from scipy.stats import pearsonr\n",
    "import pandas as pd\n",
    "import pickle\n",
    "from model import TwoNN\n",
    "import numpy as np\n",
    "import torch\n",
    "import copy\n",
    "\n",
    "\n",
    "plt.style.use([\"science\", \"no-latex\", \"nature\"])\n",
    "\n",
    "\n",
    "def calculate_pvalues(df):\n",
    "    dfcols = pd.DataFrame(columns=df.columns)\n",
    "    pvalues = dfcols.transpose().join(dfcols, how=\"outer\")\n",
    "    for r in df.columns:\n",
    "        for c in df.columns:\n",
    "            tmp = df[df[r].notnull() & df[c].notnull()]\n",
    "            pvalues[r][c] = round(pearsonr(tmp[r], tmp[c])[1], 4)\n",
    "    return pvalues\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Disparity impact of FL\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "attr_idx = 1  # Sex\n",
    "res_data = pd.read_csv(\"saved_information/income_all_information.csv\")\n",
    "res_data[\"new_gap_acc\"] = res_data[\"FL\"] - res_data[\"Standalone\"]\n",
    "res_data[\"new_gap_eo\"] = res_data[\"Standalone_eo\"] - res_data[\"FL_eo\"]\n",
    "res_data[\"new_gap_dp\"] = res_data[\"Standalone_dp\"] - res_data[\"FL_dp\"]\n",
    "plot_data = (\n",
    "    res_data[res_data[\"attr\"] == attr_idx].groupby([\"client\"]).mean().reset_index()\n",
    ")\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "bplot = sns.boxplot(\n",
    "    x=\"variable\",\n",
    "    y=\"value\",\n",
    "    data=pd.melt(plot_data[[\"new_gap_acc\", \"new_gap_eo\", \"new_gap_dp\"]]),\n",
    ")\n",
    "plt.ylabel(\"Benefit of FL\")\n",
    "plt.gca().set_xticklabels(labels=[\"Accuracy\", r\"$\\Delta^{EO}$\", r\"$\\Delta^{DP}$\"])\n",
    "plt.xlabel(\"Metric\")\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<!-- # Figure: propagation path based on the whole influence -->\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Bias propagation in FL\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABZEAAAERCAYAAAAKSOkNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAB69klEQVR4nO3deXgV5dk/8O8NKCACImpd8DXSVvYE1FatC8Eub91FbZUiCWmx2roRVMQu5tBaF1yCtbW1QiKLQCsutb5qSyvRvl38WTYB11eM1bqhrXWpKMv9+2POJJPJnHNmzpl9vp/rOleSObM8M0nuec49zyKqCiIiIiIiIiIiIiIiJz2iLgARERERERERERERxReTyERERERERERERERUEJPIRERERERERERERFQQk8iUaCKyXUTWisgGEfmNiOwW8PGmi0hd/vs7ROTF/PHXisifLeudKiJPisjTIrJeRE61vHeDiBwbZDmJiMISkzi8TkSeE5GFIjLEsm57PgY/KSK/E5G988t/LyKDgiwnEVEUROS7IrIxH/fWishhPu13uYgMzX9vxlazDvzj/HIRke+JyPP5mLxSREZZ9sHYS0SpFnIMXi8iT4nIVSLSJ/9elYh8mD/2UyLycxHpISJ7isjDfpSFso1JZEq6D1V1rKqOBvBPAOcHdSAR6QXg6wCWWBZflj/+WFX9XH69GgA3ADhFVUcAOBnADSJSnd/mFgCzgionEVHI4hCHawAMA7AGwCMisrPl/QmqWg3gbwC+k1+2CMC3gyonEVEUROQIACcCODgf974A4GUf9jsKQE9V3WRZPMFSB74ov+x8AJ8DUKOqBwG4BsD9ZnIDjL1ElGIRxOAxAD4LYCiA2yzvvaCqYwFUAxgJ4FRV3QzgNRE5stLyULYxiUxp8hcA+wGAiHxWRP4iImtE5M8iMiy/vGe+JfCG/NPBC/PLDxGRR0VklYj8VkT2cdj/sQBWq+q2EuW4FMDVqvoiAOS/XgPgsvzPLwEYbLaIIyJKkcjisBqaAbwO4DiHbR8D8Kn89/cDmFTx2RIRxcs+AN5S1Y8AQFXfUtVXAecYKyIDReRZS3xeKiLnOOx3MoBfuzj+5QAuUNX/5I//OwB/zm8PMPYSUbqFHoNV9X0A5wE4VUR2t723DUYMNuu/96EzHhOVhUlkSgUR6Qng8zAqpwDwDICjVXUcgCsBXJ1f/k0AVQDG5p8O3ikiO8FoHXyGqh4CoAXAjxwOcySAVbZl11u68t2ZXzbKYb2/5ZebVuf3R0SUChHGYbvVAIY7LD8RwHoAUNV/AegtIoPdnR0RUSL8DsD++aEkbhWR8QBQKMaq6r8BXADgDhE5C8AgVb3dYb9OsXelpQ7cKCIDAPSztZQDLHVgxl4iSrkwY3AHVX0XwIsAPm1dLiK7wKibr88v+huAoys5QaJeUReAqEJ9RWQtjJZvTwNYkV8+EMACEfk0AAWwU375FwD83GzFpqr/FJHRAEYDWCEiANATwGsOx9onfwyry1R1eRnlfhPAvmVsR0QUN1HHYTux/bxSRLYDeBLA9yzLzTj8dqkTJCJKAlV9X0QOgZEkmADglyIyC0biwDHGquoKEfkKgJ8CqCmw630AbLYtm6Cqb5k/5JPIbjD2ElEqhRyD7az130/m6+YK4Neq+lB+OXMQVDEmkSnpPlTVsfmnbL+FMRbbjwH8EMBKVZ0oIlUA2orsQwBsVNUjSh0LQJ8S6wDAUwAOAbDOsuwQABstP/fJ74+IKOniFofHAfiD5ecuiQ4LxmEiSh1V3Q4j3raJyHoA9TBasDnGWBHpAWAEgP8AGATgFYfdloy9qvquiHwgIkNtrZEPAfCo5WfGXiJKrShisIj0h9HL7zkYjTjMMZHtGH+pYhzOglIhP/baRQAuyU+8NBDAP/JvT7WsugLAufl1kB836FkAe+YHwoeI7CSWmaQtnkbneELF3ADginzSBPmv3wFwo2WdgwBscHNuRERJEHUcFsNFMFprFJ19WoxmIHsDaHd1ckRECSAiw/K9P0xjAbyE4jG2EUZs/RqA1ny3azu3deDrAfxYRPrmj/MFAEchPxkqYy8RpVkUMVhEdgVwK4D78kMGFcMcBFWMSWRKDVVdA6O78iQAcwBcIyJr0LXF/TwAfwfwpIisA/A1Vf0YwBkArssvWwtjZmm7hwAcY1tmHRN5rYjsrKprYUws8hsReQbAbwDMzC83x0T6FIxuLUREqRFhHF4Ho/XFZ2C0PP64RFEPAfBXFxOlEhElya4whhF6SkSeBDASQK5QjM1P5jQNwCWq+kcYE5B+z2G//wOg1rbMOibywvyyWwA8AWC9iDwL4PsATlFVs+UbYy8RpVnYMXgDgP8Ho159rovyTcjvi6hsoqpRl4EoMUTkXhgJ4ecr2MdEAAer6vf9KxkRUTb4FIdvBnC/qv6h5MpERBmXb1m8EsCR+a7a5e6HsZeIyCMfY/BjMB7slWqxTFQQWyITeTMLRlfpSvRC16EtiIjIPT/i8AYmMYiI3Mm3JG6CMYFqJRh7iYg88iMGi8ieAG5iApkqxZbIRERERERERERERFQQWyITERERERERERERUUFMIhMRERERERERERFRQb1KrxKNadOm6ZAhQwq+397ejqqqqrL2zW25LbfltknZdvbs2fNVdVpZG1eo0jjs5rzjsA+WM5vl9GMfLGf6yxllDAaKx+Fy7y3cjttxO26XpO3iHIdNcbpe3I7bcTtu5/d2XeKwqsby1dTUpMWUep/bcltuy23TsC2AnCY0Drs57zjsg+X0dx9JKacf+2A5/d1HHMsZZQzWEnG43HsLt+N23I7bJWm7OMdhN+XndtyO23G7pG9njcOxHc6ivb0duVwObW1tvu+7trY2cdtWgucb/20rwfON/7blyse/qtAP7FKpa+LmmvmxjzCOwXL6e4w4lNOPcrCc/pYjKeUMUxD14XLPLynblSsp58fr4u925UrK+SX9usS9LlyppPw9JP3vKG7blSsp58fr4u925QqsnBrB0zw3r1JZ85UrV3rKpicdzzfdeL7pVsn5IsYtkeMiKX9PLKe/WE5/sZzOoozBWiIOJ+V3FjZeF2e8Ls54XZzF6brEOQ6b4nS94oTXxRmvizNeF2dxuC7WOCzGz/GTy+U0l8tFXQwiokiJyGxVzUVxbMZhIsq6KGMwwDhMRBR1HJ46dapWVVWhtrY2Vj1ViIjC0NbWhgkTJixQ1alAjCfWIyIiIiIiIiKKSlVVFfgwj4iyKv/wrN38ObZjIhMRUbSCHJueiCju0j4WJxERERGRF2yJTEREjtjygoiyzN7yohIi0g/ArQA+BtCmqnfml58K4MsA9gfwQ1X9qx/HIyIiIiLyG1siExEREREF6zQAy1X1HAAnmwtV9T5VPQ/A9wAcHVXhiIiC1NoKVFcbX4mIKLnYEpmIiIiIKFhDAKzPf7/d+oaIXALgJAAX2jcyhxUCwEmdiCixmpuB9euBuXOBhobS67e1tVmHU6sKrGBERORJbFsicyxOIso6jsdJRJQar8BIJAO2+req3gjgqwBm2DcyhxXK5XJMIBNRYjU2Gi2Rp093t35tbW1H7INPwwoREWWWj91BYptENivNrDATUVb5OR5nOfgwj4iyzOcHefcAOF1EfgbgNyKyCABEZJqI3ALgBgAtPh2LiChWGhqAdevctUImIiKfWbuDVIjDWRARkSNOrEdEWebngzxV/QCANX1yZ375PD/2T0REhRWZ3HQWgAMB7AHgYlV9JbpSEhEFpLHRSCC77Q5SRGxbIhMRFcMJOoiIyBXeMIiIsq7Q5KbXquq5ABYDmBBV4YiIAuVjdxC2RCaiRPI6QQcREWUUbxhERFlXbHLTXWGMS/9Npw05wSkRZVGhCU6ZRCaiRPKxRwYREaUZbxhERFlnTm66Fpbe2CIyAMBPAcxU1fecNuTwbkSURdaHZrNnz243lwc+nIWI9BORBSJyu4hMtizfR0R+LCK3iMiRQZeDiNKFE3QQEZErCb5hcIJTIsoyHyc4dZzcFMAdAHYD8F0ROdaH4xARpVoYLZHN8Yd+IyK/RH4iEQCXAngPwK4wngwSEVGMmMkLdt0joizyMXlRNraAI6Is82uC0yKTm55W6b6JiLIkjCRyofGHRgG4GMCbAK4HMM26EcceIqKsKjT+UNiYvCCiLPMreUFERERElAZhJJEdxx/KL/8XgPcB9LFvxOQFEWVVofGHiIiIiIiIiIiiEEYS+R4APxGRE5Aff0hVpwC4CcAcAArgZyGUg4iIiIiIiIiIiIg8CjyJXGT8oacATA36+EREWSci/QDcCuBjAG2qemd++akAvgxgfwA/VNW/RlZIIiIiIiIiIoqtHqVXISKihDMnOD0HwMnmQlW9T1XPA/A9AEdHVTgiIiIiIiIiircwhrMgIqJoFZrgFCJyCYCTAFxo34gTnBJRFsVlclOgMw4zBhNRFuVjcVW0pSAiIhOTyERE6VdoglOo6o0isgjAdeg69BAnOCWiTIrT5KaMw0SUZflY3B5lGfgwj4iyzP4wj0lkIqL0c5zgVESmAagBMBDA7ZGWkIiIiIgoZvgwj4iyzP4wL7ZjIptP/CzdCYkoJlpbgepq4ysFx68ufKr6gao2qOq3VPVOVZ2SXz5PVS9U1TpV/WOlxyEiKhtvLEREREREsRbbJLL5xI9dRojip7kZWL8emDs36pKkWxy68BERhYI3FiIiIiKiWIttEpmI4qux0WgwNn161CUhIqJU4I2FiIiIiCjWmEQmIs8aGoB164yvlF4cVojIJxyqobQY3lj8GlKIiIiIiCgNmEQmIiJHHFaIyCccqiGR4jCkEB/mEVGW8WEeEVG89Iq6AERERESp1thoJJA5VAN5ZD7MIyLKojg8zCMiok5MIhMREREFqaEhVsM0EBERERERecXhLIhShkNvEhERERERERGRn2KbROYYcETlicPQm0xk+4PjwBERERERRYd5CSLKMntOIrZJZE7oRFSexkYjgRvl0Jt+JLKZiI5+HDhWmokoy/ggj4iImJcgoiyz5yRim0QmovI0NADr1kU7/KYfiew4tKjOOlaaiWKCT9UiEfWDPCIiIiKiOGESmYh850ciOw4tqomIYoFP1TKLPUKIKMvYI4SIKF56RV0AIiInDQ3RtqYmIoqNK64ArrsOuPjiqEtCITN7hBARZRF7hBARxQuTyERERERx1dpqtERubOSTNSIiIiIiigyHsyAiIiKKKw5lQUREREREMcAkMhEROeJYnEQxYB0gnhPshYpjcRIRERERdYptEpnJC6LKMd+QbFEnMMyxOPPj0RFRFKwzlbJVcqj8HItTRPqJyAIRuV1EJluWzxKR20TkbhEZ4sexiIiIiIiCENskMpMXRJVjviF6lSTyOZkIEXVhbZVMSXMagOWqeg6Ak82Fqnqtqp4LYDGACVEVjoiIiIioFE6sR5RijY1GApn5huhYE/mcE4uIKtLQwECSXEMArM9/v936hojsCuCrAL5p38jsmQcYDxbZuIKIsqCtrc3aI7kqupJ0xmHGYCLKInvvaCaRiVKM+YboMZFPREQAXoGRSF4LS09AERkA4KcAZqrqe/aNzJ55RERZYk3Yzp49uz3KsjAOE1GW2XtHx3Y4CyKiNLAOZ0qUeBxonahc9wA4XUR+BuA3IrIov/wOALsB+K6IHBtR2YiIiIiISmISmYiIHHGCU+qGA60nA5P9vvBzclNV/UBVG1T1W6p6p6pOyS8/TVVPUtXzVPURP45FRERERBSEwJPIhWajzr83RkTezI8FR0REMcIJTqkbTuyWDEz2+4KTmxIRERERdQqjJbLjbNQishOAaQAectrIbAEXdSu4999/H9OnT8eQIUPQp08fHHTQQfj5z39e9v5mzpyJ3XbbDSKCefPmYePGjRgzZgx69eqFIUOGoK2tDSKCCy64oOh+qqqqsOuuleXe//znPyOXy2Ht2rUF19m2bRvOP/98DBw4EIMGDcJll12GHTt2OK47depUiEiX1zvvvAMAaG1txac//WmISMXlJkq7tra2jviHiCcTiQPGYXdxuL29vVsMFhHccccdAICnn34an/vc59C7d28MGzYMv/vd77psv2XLFgwbNqz4uXN8lmRgsp98xjjsTxx+4IEHMGrUKPTt2xdHHHEEnnrqqY5t33nnHdTV1WG33XbDrrvuimOOOaai8yKi9GAMdp+TWLFiBcaOHYu+fftir732wrnnnouPP/4YAHMSRL5Q1UBfAK4AMDb//RLb8k/CGAtuV/t2TU1NGrUdO3bo+PHjFYB+8Ytf1F/84hf6ne98R7/+9a+Xtb/3339fAeh//dd/6aJFi/SFF17QSy+9VAHoRRddpL/+9a/1jTfe0KVLl+qqVauK7uv+++/X5cuXl1UO0/XXX68AtLW1teA6N910kwLQCy64QKdNm6YAdP78+Y7r1tfX6x577KFLly7teH388ceqqnrrrbfqjBkzdPfdd9d+/fpVVO6otbSojhljfE3j8SheAOQ04Dhd6MU4nKw4/P7773eJv6NGjVIAum7dOlVVramp0UGDBulPfvITHTVqlA4YMEDfeeedju2vuOIK3WWXXRSAnn/++RWdF1FaRBmDVRX19fXa1NSkK1euDP5kC2Ac9icOv/zyy9qnTx8dOXKk/vznP9fdd99dq6urdceOHaqqOnHiRO3Ro4fOmDFDb7/9dm1oaKjovCgdsv45YOXKlQrgDo0wDkddH2YM9paT2HfffbVXr17a3NysRx99tALQhQsXqmq6chJEYbLWh8NIIk8BcGL++2WW5b8EMBfAUwAusW8XdbBWVf3973+vAHTkyJG6ffv2juXbt2/XDRs26LHHHqv9+/fX//qv/9If/OAHHZXA3/zmN1pdXa277LKLVldX6+9+9ztVVT3ggAMUQMertbW1y8/jx483b5QdH+CfffZZPe6443TgwIG622676S233NKxLzPwffTRR3rJJZfovvvuqwMHDtQzzjhD33zzTVU1ErtmwB0yZIgOGTJEH3vssY7jWF8vvviiNjU1KQC96667VFW1urpa+/fvr9u2bdMPP/xQd955Zz3qqKMcr1d9fb0ecMAB+t5773VcCztruZNqzBjjP6e6Op3Ho3jxI4EBoB+ABQBuBzDZsnwWgNsA3A1giH07xuHkxWHTa6+9pr169dIjjjhCVVVXr16tAPTb3/62qqrOnz9fAei8efNUVXXdunXap0+fjoo8k8hEhqiTyIzD6YnDd999twLQq666SlVVzzrrLAWgq1at0hdeeEEB6OTJk/Wjjz7Sbdu2+fK7o+Tj5wDGYcZgbzF477331gEDBuj69ev1m9/8pgLQ+++/v8s6achJEIXJGofDGM7CcTZqVT1TVacD+H8wkhixs2rVKgDAF7/4RfTo0Xmptm/fjpNPPhmPP/44rrrqKlRXV+PKK69Ea2srnnvuOZx++uno27cvvv/976N3796YOHEiXnvtNVx99dUAgBEjRmDp0qUYMWIEvvSlLwEAvv/97+PKK6/scvxt27bhpJNOwooVK3DxxRfjRz/6Efr27dutnNdccw1uvPFGnHTSSZg+fToeeughnHfeed3O5dxzz8Urr7yCXC6HkSNHYvJkY4jq8847D0uXLsWee+7Zbd8vvvgi9t57b/Ts2RN9+vTB4MGDsWnTpoLX7O9//zv69++PXXbZBRdccEHBbiZJFnYvYS/H41xKVIDjsEKqeq2qngtgMYAJURWuGMZh73EYAObPn49t27bhW9/6Vsc+AGC//fYDAAwZMgQAsGnTJuzYsQPTpk3D+eefj0MPPbTofokoexiH/YnD5n4ff/xxbNq0CevWrevYtzmsxRNPPIF+/fqhX79+uPzyy4vun7KBoxMRY7C3GLxo0SKoKsaMGYNf/OIXmDZtGk466SS3l5uIStGAnthV+or6iZ+q6pw5cxSAXnzxxV2Wr1+/XgHo1772NVVVfe655xSAnnHGGfqTn/yk29M0AHr33Xfr5s2bO57umc4//3wF0NFN0frUb8OGDR37tbM+PTv00EO7Ha9///6q2vnU77e//a2qqvbu3VuHDh2qqs5dR7Zv365bt27teILZv39//fSnP93x/t5776377ruv4/VasGCB3nHHHXrffffpUUcd1aXriFO5yX9srZA+8KclsuOwQvmfdwWwFEB/+3ZmN+oou1IzDnuLw+b2BxxwgA4ePFg//PBDVe1sAfejH/1IVVUffvhhBaDf+c53dN68ebrnnnvqunXrdPHixQpAzz777I7WI77Ker9cSoSVK1d2xD5kvBu1KuOwqj9xWFX1jDPO6FI2APrAAw/o8uXLFYDut99+evfdd+uxxx6rAHTFihXFfjVEmeBHXbiSV9RxmDHYWwz+0pe+pAMHDtSlS5fq2WefrQD03nvvLVhuIirNGod7ucgzZ9YhhxwCAPj973+PHTt2dDz5M1vXikiXr1YzZ87EF7/4xY6fR4wYEWhZe/XqhQceeAA9e/bsUkbT7rvv3rHe9u3bATiXe8eOHdi2bRt69OgBEcGBBx6ITZs2Yfv27di6dSvefvttHHbYYQCArVu3Yvv27ejduzdEBHV1dR376dGjB/73f/+3y4QhFLzGRmDuXLZWoG5eATAEwFpYJlQVkQEAfgpgpqq+Z9+oqqrKnNwvMozD3uIwADz88MN46aWXcMkll6BPnz4AgAMPPBAA8MorrwAA/vGPfwAAhg4dipdffhmbN29GTU1NRxkWL16M3r17Y968ef5cHFNzM7B+vRGoODkfxVRtbS1qa2sBALNnz26PtDAxwDjsTxwGgLvuugtPP/00PvzwQ9x6662YP38+RowY0TER9dFHH43TTjsNmzdvxiOPPIIXXngBX/jCF/y9SETkSXt7O3K5XJd7Q5gYg93H4Lfeegu/+93v8PnPfx5nnXUWhgwZgsWLF2PFihU49dRTAzxzovRqa2sDgCrz5zCGs0isCRMmoLa2Fhs3bsTxxx+PefPm4corr8TNN9+MT37yk/j1r3+NW265BZdccgkA4Pjjj8cXv/hF7Lzzzrjnnnvw4osvYs2aNbjiiiuwdetWz8cfNmwYDjroINx3333I5XL42c9+hvnz53db78QTT8S2bduwYMEC/P3vf8fDDz+M224rPULIoEGDAAAPPfQQfvWrXwEArrrqKvTt2xf33HMPAKC+vr5jNtiLLroIW7duxdSpUwEA55xzDvr27dvRxWbChAmYM2cOWlpa0NTUBAAdwX316tWYN28e3n//fWzbtg3z5s3DY4895vmaUHENDcC6dczNUDeOwwrBmNh0NwDfFZFjIypbUYzD3uIwANx2220QEZx77rkdy8aNG4fq6mosW7YMP/3pT3HTTTehf//+OP300/HVr34Vd911F+66666OhwZf/vKXO7pg+4r9csPHcY6oQozD/sRhALjiiivw17/+FcuXL8eCBQtw2mmnYejQoRg3bhzGjBmDP/zhD7j99tvR2tqKnj174sgjj/R8vYjIX2ajiigSyABjMOA+Bu++++4YOHAg/vKXv+AnP/kJ5syZ03EOAHMSROXIx772jgUaYlcQL6+ou42Y3nvvPb3ooot033331Z122kmHDh2qt956q27YsEEnTJigu+66q+6///5dBrF/4IEHdOzYsdq3b1/dZ5999Mwzz9R33nnHc9cRVdVnnnlGv/zlL3cMYv/jH/9YVbsPYn/ZZZfpkCFDtG/fvjpy5Ei9+eabVbWz68gTTzyhqqr9+vXTAw44QFVVN2/erIcccoj27NlTe/bsqarabRD7jz/+WM877zwdMGCADhw4UBsbGzsG9Lfv+5xzztEhQ4Z0dE+56aabOs7T3K/1VV9f7+evKpPYMzz9EGEXPsbh5MXhV155RXv27Kmf//znu13HDRs26OGHH64777yzfvrTn9aHHnqo2zr2c6cU4DhHFYkyBivjcOri8PHHH6+77LKL9u/fXydPnqz//Oc/O94zY3Tv3r3105/+tN55552V/dKIUoJxmDHYSwz+7W9/23Hee+21l5577rn60UcfddkvcxJE3ljjsBg/x8/UqVO1qqoqsm4jRElQXW30DK+uNlogU7q0tbVhwoQJC1R1ahTHz+VyGvVwFkSBaG01htZobPS/64Z130Bwx/FSHnOcI3ZT8UxEZqtqLqrjsz5MRFkWdV0YYH2YiMhaH47tcBZRdxshSoIk9gxnz2r3unUdISJ/WMdmDmrfCxcGexy3OM5RorE+TERZxrowEVG8xDaJTESl+ZUb8Cux62Y/ccipkDvmRCL5wfSJ0iPIJ3DmvuvqkvmkjzrYJxIhIiIiIsoy10lkETk9yIJkTXt7O0QEJ554oq/73bZtG84//3wMHDgQgwYNwmWXXdZtVlTTq6++iuOOOw59+vTBAQccgMWLF/taFkoOvxK7bvbDnEpypL0FHONwhgXZOte6b7YCTjS2gAse4zARUbQYh4nICy8tkZsDKwX55pZbbsGtt96Kuro6nHHGGbjhhhtwxx13OK77rW99C4888giuvvpqHHDAAaivr8f//d//hVtgigW/Ertu9sOcCqUd4zARUbQYh4mIosU4TJROXpLIElgpYsh8InfUUUfhhBNOwG677YYpU6bgo48+6rLe9u3bsc8++6C6urpj2Wc/+1nsscce2Lp1K77yla9g0KBB6NOnD0aOHIl7773X8Xi1tbUQEbz11lt46623ICIdrf/+/e9/4+tf/zr22msv7LHHHvjmN7+JDz74AACQy+UgIli+fDkA4I477kD//v0xd+5c3HLLLdh5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",
      "text/plain": [
       "<Figure size 1440x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "font_size = 10\n",
    "res_data = pd.read_csv(\"saved_information/income_all_information.csv\")\n",
    "res_data[\"new_gap_acc\"] = res_data[\"FL\"] - res_data[\"Standalone\"]\n",
    "res_data[\"new_gap_eo\"] = res_data[\"Standalone_eo\"] - res_data[\"FL_eo\"]\n",
    "res_data[\"new_gap_dp\"] = res_data[\"Standalone_dp\"] - res_data[\"FL_dp\"]\n",
    "\n",
    "figs, axes = plt.subplots(1, 4, figsize=(20, 4), sharey=False)\n",
    "base = 0\n",
    "for attr_idx in [0, 1]:\n",
    "    plot_data = res_data[res_data[\"attr\"] == attr_idx]\n",
    "\n",
    "    sns.scatterplot(\n",
    "        data=plot_data,\n",
    "        y=\"new_gap_eo\",\n",
    "        x=\"Standalone_eo\",\n",
    "        ax=axes[base + 0],\n",
    "        color=\"blue\",\n",
    "        zorder=10,\n",
    "    )\n",
    "    sns.scatterplot(\n",
    "        data=plot_data,\n",
    "        y=\"new_gap_dp\",\n",
    "        x=\"Standalone_dp\",\n",
    "        ax=axes[base + 1],\n",
    "        color=\"red\",\n",
    "        zorder=10,\n",
    "    )\n",
    "\n",
    "    if attr_idx == 0:\n",
    "        axes[base + 0].set_title(\"Race (EO)\", fontsize=font_size)\n",
    "        axes[base + 1].set_title(\"Race (DP)\", fontsize=font_size)\n",
    "    elif attr_idx == 1:\n",
    "        axes[base + 0].set_title(\"Sex (EO)\", fontsize=font_size)\n",
    "        axes[base + 1].set_title(\"Sex (DP)\", fontsize=font_size)\n",
    "    corr_eo = (\n",
    "        plot_data[[\"Standalone_eo\", \"new_gap_eo\"]]\n",
    "        .corr(method=\"pearson\", min_periods=1)\n",
    "        .iloc[0, 1]\n",
    "    )\n",
    "\n",
    "    corr_dp = (\n",
    "        plot_data[[\"Standalone_dp\", \"new_gap_dp\"]]\n",
    "        .corr(method=\"pearson\", min_periods=1)\n",
    "        .iloc[0, 1]\n",
    "    )\n",
    "\n",
    "    p_value_dp = calculate_pvalues(plot_data[[\"Standalone_dp\", \"new_gap_dp\"]]).iloc[\n",
    "        0, 1\n",
    "    ]\n",
    "    p_value_eo = calculate_pvalues(plot_data[[\"Standalone_eo\", \"new_gap_eo\"]]).iloc[\n",
    "        0, 1\n",
    "    ]\n",
    "\n",
    "    for idx, corr, p_value in zip(\n",
    "        [base + 0, base + 1], [corr_eo, corr_dp], [p_value_eo, p_value_dp]\n",
    "    ):\n",
    "        axes[idx].axhline(y=0, color=rgb(215, 25, 28), linestyle=\"--\", zorder=10)\n",
    "        xmin, xmax = axes[idx].get_xlim()\n",
    "        ymin, ymax = axes[idx].get_ylim()\n",
    "        ylim = max(abs(ymin), abs(ymax))\n",
    "        y = np.arange(-ylim, 0, 0.01)\n",
    "        y = np.arange(0, ylim, 0.01)\n",
    "        axes[idx].set_xlim(xmin, xmax)\n",
    "        axes[idx].set_ylim(-ylim, ylim)\n",
    "        axes[idx].set_xlabel(r\"$\\Delta_{Standalone}$\", fontsize=font_size)\n",
    "        axes[idx].text(\n",
    "            0.1,\n",
    "            0.7,\n",
    "            \"Coefficient:{}\\np value:{}\".format(round(corr, 3), round(p_value, 3)),\n",
    "            color=\"black\",\n",
    "            weight=\"bold\",\n",
    "            transform=axes[idx].transAxes,\n",
    "            fontsize=font_size,\n",
    "            zorder=15,\n",
    "        )\n",
    "        axes[idx].set_ylabel(\"\")\n",
    "    base += 2\n",
    "\n",
    "axes[0].set_ylabel(\"Fairness benefit of FL\", fontsize=font_size)\n",
    "axes[3].text(\n",
    "    0.7,\n",
    "    0.1,\n",
    "    \"Worse\",\n",
    "    color=rgb(215, 25, 28),\n",
    "    weight=\"bold\",\n",
    "    transform=axes[idx].transAxes,\n",
    "    fontsize=font_size,\n",
    "    zorder=15,\n",
    ")\n",
    "axes[3].text(\n",
    "    0.7,\n",
    "    0.6,\n",
    "    \"Better\",\n",
    "    color=rgb(77, 175, 74),\n",
    "    weight=\"bold\",\n",
    "    transform=axes[idx].transAxes,\n",
    "    fontsize=font_size,\n",
    "    zorder=15,\n",
    ")\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Impact of scaling model parameters\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# load the data\n",
    "random_seed_list = [0, 1, 2, 3, 4]\n",
    "if os.path.isfile(\"saved_information/income_scaling_results.csv\"):\n",
    "    all_results_df = pd.read_csv(\"saved_information/income_scaling_results.csv\")\n",
    "\n",
    "else:\n",
    "    all_results = {\"acc\": [], \"eo\": [], \"dp\": [], \"weight\": [], \"client\": [], \"rs\": []}\n",
    "    for random_seed in random_seed_list:\n",
    "        folder_path = \"results/income/run_{}\".format(random_seed)\n",
    "        data_file = \"{}/data.pkl\".format(folder_path)\n",
    "        with open(data_file, \"rb\") as f:  # Python 3: open(..., 'rb')\n",
    "            dataset = pickle.load(f)\n",
    "\n",
    "        (\n",
    "            num_user,\n",
    "            users,\n",
    "            train_data_num,\n",
    "            test_data_num,\n",
    "            train_data_global,\n",
    "            test_data_global,\n",
    "            val_data_global,\n",
    "            train_data_local_num_dict,\n",
    "            test_data_local_num_dict,\n",
    "            train_data_local_dict,\n",
    "            test_data_local_dict,\n",
    "            val_data_local_dict,\n",
    "            class_num,\n",
    "            unselected_data_local_dict,\n",
    "        ) = dataset\n",
    "        test_model = TwoNN(54, 32, 2)\n",
    "        for client_idx in range(51):\n",
    "            x, y, s = get_dataset(test_data_local_dict[client_idx])\n",
    "            weight = 1\n",
    "            test_weight = copy.deepcopy(torch.load(\"{}/fedavg.pt\".format(folder_path)))\n",
    "            test_weight[\"fc1.weight\"][:, 43:45] = (\n",
    "                weight * test_weight[\"fc1.weight\"][:, 43:45]\n",
    "            )\n",
    "            test_model.load_state_dict(test_weight)\n",
    "            acc, eo_gap, dp_gap, _ = get_performance(test_model, x, y, s, 1)\n",
    "            all_results[\"acc\"].append(acc)\n",
    "            all_results[\"eo\"].append(eo_gap)\n",
    "            all_results[\"dp\"].append(dp_gap)\n",
    "            all_results[\"weight\"].append(weight)\n",
    "            all_results[\"client\"].append(client_idx)\n",
    "            all_results[\"rs\"].append(random_seed)\n",
    "\n",
    "            for weight in np.logspace(-1, 1, 100):\n",
    "                test_weight = copy.deepcopy(\n",
    "                    torch.load(\"{}/fedavg.pt\".format(folder_path))\n",
    "                )\n",
    "                test_weight[\"fc1.weight\"][:, 43:45] = (\n",
    "                    weight * test_weight[\"fc1.weight\"][:, 43:45]\n",
    "                )\n",
    "                test_model.load_state_dict(test_weight)\n",
    "                acc, eo_gap, dp_gap, _ = get_performance(test_model, x, y, s, 1)\n",
    "                all_results[\"acc\"].append(acc)\n",
    "                all_results[\"eo\"].append(eo_gap)\n",
    "                all_results[\"dp\"].append(dp_gap)\n",
    "                all_results[\"weight\"].append(weight)\n",
    "                all_results[\"client\"].append(client_idx)\n",
    "                all_results[\"rs\"].append(random_seed)\n",
    "\n",
    "    all_results_df = pd.DataFrame.from_dict(all_results)\n",
    "    all_results_df.to_csv(\"saved_information/income_scaling_results.csv\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 576x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 6))\n",
    "ax2 = plt.gca().twinx()\n",
    "ax1 = plt.gca()\n",
    "sns.lineplot(\n",
    "    data=all_results_df,\n",
    "    x=\"weight\",\n",
    "    y=\"eo\",\n",
    "    label=r\"$\\Delta^{EO}$\",\n",
    "    err_style=\"band\",\n",
    "    errorbar=(\"se\", 2),\n",
    "    color=\"red\",\n",
    "    ax=ax2,\n",
    "    linestyle=\"-.\",\n",
    ")\n",
    "sns.lineplot(\n",
    "    data=all_results_df,\n",
    "    x=\"weight\",\n",
    "    y=\"dp\",\n",
    "    label=r\"$\\Delta^{DP}$\",\n",
    "    err_style=\"band\",\n",
    "    errorbar=(\"se\", 2),\n",
    "    color=\"red\",\n",
    "    ax=ax2,\n",
    ")\n",
    "sns.lineplot(\n",
    "    data=all_results_df,\n",
    "    x=\"weight\",\n",
    "    y=\"acc\",\n",
    "    label=\"Accuracy\",\n",
    "    err_style=\"band\",\n",
    "    errorbar=(\"se\", 2),\n",
    "    color=\"blue\",\n",
    "    ax=ax1,\n",
    "    linestyle=\"--\",\n",
    ")\n",
    "ax1.set_xlabel(\"Scaling factor\")\n",
    "\n",
    "ax1.set_ylabel(\"Accuracy\", color=\"blue\")\n",
    "ax1.spines[\"left\"].set_color(\"blue\")\n",
    "ax1.yaxis.label.set_color(\"blue\")\n",
    "ax1.tick_params(axis=\"y\", colors=\"blue\")\n",
    "\n",
    "ax2.spines[\"right\"].set_color(\"red\")\n",
    "ax2.set_ylabel(\"Fairness Gap\", color=\"red\")\n",
    "ax2.yaxis.label.set_color(\"red\")\n",
    "ax2.tick_params(axis=\"y\", colors=\"red\")\n",
    "ax1.set_xscale(\"log\")\n",
    "lines, labels = ax1.get_legend_handles_labels()\n",
    "lines2, labels2 = ax2.get_legend_handles_labels()\n",
    "ax2.legend(\n",
    "    lines + lines2, labels + labels2, loc=\"upper right\", bbox_to_anchor=(0.5, 0.7)\n",
    ")\n",
    "ax1.legend_.remove()\n",
    "ax1.set_title(\"Effect of scaling\")\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "90558f95e5e6fe198d8a8174b895001a4f407e4163c13d304a39085ecb11bb32"
  },
  "kernelspec": {
   "display_name": "Python 3.8.13 ('fedml_2')",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
